package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.DmcCsunVersionSet;
import com.csun.cmny.provider.model.dto.version.VersionSetApplyDto;
import com.csun.cmny.provider.model.dto.version.VersionSetDto;
import com.csun.cmny.provider.model.dto.version.VersionSetPersonApply;
import com.csun.cmny.provider.model.dto.version.VersionSetQueryDto;
import com.csun.cmny.provider.model.vo.csunversion.AppVersionDeviceVo;
import com.csun.cmny.provider.model.vo.csunversion.VersionDeviceVo;
import com.csun.cmny.provider.model.vo.csunversion.VersionSetVo;

import java.util.List;
import java.util.Map;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2020-04-02 11:25
 * @Description: the interface dmc csun version set service
 */
public interface DmcCsunVersionSetService extends IService<DmcCsunVersionSet> {

    /**
     * query csun verion set list with page
     *
     * @param versionSetQueryDto    the version set query dto
     *
     * @return  the list.
     */
    List<VersionSetVo> queryListWithPage(VersionSetQueryDto versionSetQueryDto);

    /**
     * add csun version set
     *
     * @param versionSetDto the version set dto
     * @param loginAuthDto  the login auth dto
     *
     * @return  the int.
     */
    Integer add(VersionSetDto versionSetDto, LoginAuthDto loginAuthDto);

    /**
     * query csun version set detail list with page
     *
     * @param versionSetQueryDto    the versiong set query dto
     *
     * @return  the list.
     */
    List<VersionDeviceVo> queryDetailListWithPage(VersionSetQueryDto versionSetQueryDto);

    /**
     * query cur task states
     *
     * @param loginAuthDto  the login auth dto
     *
     * @return  the list.
     */
    List<Integer> queryCurTaskStates(LoginAuthDto loginAuthDto);

    /**
     * 售后审批
     *
     * @param versionSetApplyDto    the version set apply dto
     *
     * @return  the int.
     */
    Integer shouHouApply(VersionSetApplyDto versionSetApplyDto, LoginAuthDto loginAuthDto);

    /**
     * 总经理审批
     *
     * @param versionSetApplyDto    the version set apply dto
     *
     * @return  the int.
     */
    Integer bossApply(VersionSetApplyDto versionSetApplyDto, LoginAuthDto loginAuthDto);

    /**
     * 个人用户设备升级
     *
     * @param versionSetPersonApply the version set person apply
     *
     * @return  the int.
     */
    Integer personApply(VersionSetPersonApply versionSetPersonApply);

    /**
     * 根据升级时间获取升级配置
     *
     * @param time  the time
     *
     * @return  the list.
     */
    List<VersionSetVo> queryVersionSetVoList(String time);

    /**
     * query update version list
     *
     * @param loginAuthDto  the login auth dto
     *
     * @return  the list
     */
    List<AppVersionDeviceVo> queryUpdateVersionList(LoginAuthDto loginAuthDto);

    /**
     * query apply var by id
     *
     * @param versionSetId  the version set id
     *
     * @return  the map
     */
    Map<String,Object> queryApplyVarById(Long versionSetId);
}
